package Day023_设计模式_动态代理.demo1_单例设计模式;

/**
 * @author zhangyan
 * @date 2020/5/17 9:28
 */
public class Test2_懒汉式单例 {
    public static void main(String[] args) {

        Person1 p1 = Person1.getInstance();
        Person1 p2 = Person1.getInstance();
        Person1 p3 = Person1.getInstance();

        System.out.println(p1);
        System.out.println(p2);
        System.out.println(p3);
    }
}


class Person1{

    //构造方法私有化,不能在外部通过new创建对像
    private Person1() {
    }

    //产生唯一实例化对象
    private static Person1 p = null;

    //定义方法 返回唯一对象
    //考虑多线程情况,加锁synchronized
    public static synchronized Person1 getInstance(){
        //创建对象
        //判断,如果person1值为null,就创建
        //不为null,就不创建,直接返回
        if (p == null){
            p = new Person1();
        }
        return p;
    }

}
